import os


from celery import Celery

# 定义celery实例, 需要的参数, 1, 实例名, 2, 任务发布位置, 3, 结果保存位置
app = Celery('mycelery',
             broker='redis://127.0.0.1:6379/14',  # 任务存放的地方
             backend='redis://127.0.0.1:6379/15')  # 结果存放的地方


@app.task
def add(x, y):
    return x + y


@app.task(bind=True)
def send_sms_code(self, phone, datas):
    # self 指方法(任务)本身,
    # 坑1: 在方法中导包
    from libs.rl_sms import send_message  # 有可能导入失败的语句, 一定要放在方法里面
    import time
    time.sleep(5)
    try:
        # 用 res 接收发送结果, 成功是:０，　失败是：－１
        res = send_message(phone, datas)
    except Exception as e:
        res = '-1'

    if res == '-1':
        # 如果发送结果是 -1  就重试.
        self.retry(countdown=5, max_retries=3, exc=Exception('短信发送失败'))
